export type Status = 0 | 1 | 2;

/**
 * 任务节点
 */
export interface Task {
  /**
   * 类型
   */
  type: 'start' | 'approval' | 'carbon-copy' | 'notify' | 'service' | 'timer' | 'end';
  /**
   * key
   */
  key: string;
  /**
   * 名称
   */
  name: string;
  /**
   * 描述
   */
  description: string;
  /**
   * 状态
   */
  status?: Status;
  /**
   * 数据
   */
  data?: any;
}

/**
 * 互斥网关
 */
export interface ExclusiveGateway {
  /**
   * 类型
   */
  type: 'exclusive-gateway';
  /**
   * key
   */
  key: string;
  /**
   * 条件项
   */
  items: ExclusiveGatewayItem[];
}
/*
/!**
 * 聚合网关
 *!/
export interface AggregationGateway {
  /!**
   * 类型
   *!/
  type: 'aggregation-gateway';
  /!**
   * key
   *!/
  key: string;
  /!**
   * 描述
   *!/
  description: string;
  /!**
   * 支线
   *!/
  items: AggregationGatewayItem[];
  /!**
   * 数据
   *!/
  data?: any;
}*/

/**
 * 节点
 */
export type Node = Task | ExclusiveGateway; // | AggregationGateway;

/**
 * 互斥节点分支
 */
export interface ExclusiveGatewayItem {
  /**
   * key
   */
  key: string;
  /**
   * 名称
   */
  name: string;
  /**
   * 描述
   */
  description: string;
  /**
   * 节点
   */
  nodes: Node[];
  /**
   * 状态
   */
  status?: Status;
  /**
   * 数据
   */
  data?: any;
}
/*
/!**
 * 互斥节点分支
 *!/
export interface AggregationGatewayItem {
  /!**
   * key
   *!/
  key: string;
  /!**
   * 节点
   *!/
  nodes: Node[];
  /!**
   * 状态
   *!/
  status?: Status;
}*/
